Script pour CO Fantasy sous Roll20 5267
Forums > Jeux de rôle > JdR Black Book > Chroniques Oubliées
Bonjour !
Alors, les PJ continuent à monter en lvl (c'est beau ) donc me voilà avec des nouvelles demandes / remarques pour le code :
- Dédoublement : si c'est possible d'ajouter automatiquement le "double de" dans les alliés (ou bien le rendre insensible aux sorts de zone des PJ ?). Le nécro était un peu tristoune que son armée des morts cible le double invoqué par l'ensorceleur ^^. Mais peut-être que c'est pas possible ? Je crois qu'on en avait déjà parlé ?
- Mon nécro avance dans la voie de Morn, il prend "souffle de mort", quelqu'un a déjà codé ça ?
- L'ensorceleur continue la voie du familier fantastique (le minimoi) pour l'instant il vient d'avoir el rang 2 (le tp) donc rien à coder je pense mais j'anticipe pour la suite ^^.
Encore merci !
- Ulti
- et
- Ulti
Oui, j'avais déjà regardé pour le dédoublement et les alliés. Ça pose pas mal de difficultés, par exemple parce que les alliés sont déterminé en fonction de la fiche de personnage, et que le double partage la fiche de l'original.
Concernant le souffle de mort, c'est pas évident à faire, mais je mets ça sur ma liste. Tu as déjà quelque chose pour les 2 premiers rangs ?
- Kyreelle
Non rien, j'ai bricolé pour le rang 2 en lui donnant artificiellement la voie des soins :
!cof-soin @{selected|token_id} @{target|token_id} modere --portee 20 --mana [[1d6]] --rang 2 ?{Tempête de mana?|Non, |Oui,--tempeteDeMana}
Et pour le rang 1, on calcule de tête quand il pense à s'en servir :p
Pour le dédoublement, oki, je continue comme je fais déjà alors et je corrigerai à la main ^^. Si j'y pense, quand je crée une rencontre, je peux imaginer de mettre "Double de #nom du mob" dans le hangout d'allié à l'avance ? Ou bien ça va tout faire bugguer ?
Pour le dédoublement, oki, je continue comme je fais déjà alors et je corrigerai à la main ^^. Si j'y pense, quand je crée une rencontre, je peux imaginer de mettre "Double de #nom du mob" dans le hangout d'allié à l'avance ? Ou bien ça va tout faire bugguer ?
Kyr
Non, ça ne fera rien, malheureusement, car le script utilise le nom sur la fiche, et le nom sur la fiche ne sera pas "Double de ...".
Bonsoir, on a tout cassé le script ce soir en live (encore. pardon. désolée.).
En gros on avait un PJ en retard, du coup j'ai sorti un dummy (une bonne grosse hydre) pour que les PJ puissent tester leurs nouvelles capacités (lvl 10 tout frai). Et en passant en fin de combat, ça a crash (même genre que la dernière fois, le script plante à chaque fois qu'on appelle une action même si on vient de le relancer).
On soupçonne l'utilisation de "Ignorer la douleur" en particulier.
Voici un petit palmarès des messages d'erreurs qui sortent :
ReferenceError: Cannot access 'combat' before initialization
ReferenceError: Cannot access 'combat' before initialization
at apiscript.js:4328:11
at iterTokensOfAttribute (apiscript.js:20543:14)
at finDEffet (apiscript.js:4326:9)
at apiscript.js:21054:9
at Array.forEach ()
at sortirDuCombat (apiscript.js:21050:11)
at Object.apiCommand (apiscript.js:41051:9)
at apiscript.js:46776:17
at eval (eval at (/home/node/d20-api-server/api.js:168:1), :65:16)
at Object.publish (eval at (/home/node/d20-api-server/api.js:168:1), :70:8)
TypeError: token.get is not a function
TypeError: token.get is not a function
at persoOfToken (apiscript.js:3670:24)
at distanceCombat (apiscript.js:3703:20)
at turnAction (apiscript.js:24509:29)
at apiscript.js:24915:23
at apiscript.js:7185:7
at Array.forEach ()
at iterSelected (apiscript.js:7174:14)
at apiscript.js:24914:7
at getSelected (apiscript.js:7595:13)
at apiTurnAction (apiscript.js:24913:5)
ReferenceError: Cannot access 'combat' before initialization
ReferenceError: Cannot access 'combat' before initialization
at apiscript.js:4328:11
at iterTokensOfAttribute (apiscript.js:20543:14)
at finDEffet (apiscript.js:4326:9)
at apiscript.js:21054:9
at Array.forEach ()
at sortirDuCombat (apiscript.js:21050:11)
at doNouveauJour (apiscript.js:22185:26)
at apiscript.js:22164:7
at getSelected (apiscript.js:7595:13)
at parseNouveauJour (apiscript.js:22142:5)
TypeError: token.get is not a function
TypeError: token.get is not a function
at persoOfToken (apiscript.js:3670:24)
at distanceCombat (apiscript.js:3703:20)
at turnAction (apiscript.js:24509:29)
at setActiveToken (apiscript.js:20689:9)
at nextTurnOfActive (apiscript.js:43685:7)
at nextTurn (apiscript.js:43991:7)
at eval (eval at (/home/node/d20-api-server/api.js:168:1), :65:16)
at Object.publish (eval at (/home/node/d20-api-server/api.js:168:1), :70:8)
at TrackedObj.set (/home/node/d20-api-server/api.js:1078:14)
at updateLocalCache (/home/node/d20-api-server/api.js:1421:18)
En essayant de passer la nuit :
ReferenceError: Cannot access 'combat' before initialization
ReferenceError: Cannot access 'combat' before initialization
at apiscript.js:4328:11
at iterTokensOfAttribute (apiscript.js:20543:14)
at finDEffet (apiscript.js:4326:9)
at apiscript.js:21054:9
at Array.forEach ()
at sortirDuCombat (apiscript.js:21050:11)
at Object.apiCommand (apiscript.js:41051:9)
at apiscript.js:46776:17
at eval (eval at (/home/node/d20-api-server/api.js:168:1), :65:16)
at Object.publish (eval at (/home/node/d20-api-server/api.js:168:1), :70:8)
- Ulti
J'espère que ça ne t'a pas trop gaché la séance !
Quand je regarde les messages d'erreurs, j'ai plus l'impression que ce serait lié à l'armée des morts. Et j'ai aussi l'impression que ce sont des erreurs que j'avais corrigées la dernière fois que tu m'avais rapporté ces crashs. Est-ce que tu avais bien la dernière version du git ?
Pour aller plus loin, ce qui m'aiderait vraiment, ce serait que tu aies le script COFantasy en premier dans la liste des scripts installés, car le numéro de ligne affiché correspond à la concaténation de tous les scripts installés dans l'ordre. Donc si COFantasy n'est pas le premier, les lignes ne correspondent à rien, malheureusement.
Ensuite, si tu réussisais à reproduire un des crashs, j'aurais de bien meilleures chances de comprendre ce qui a pu se passer.
- Kyreelle
Pas de souci pour la séance, le PJ manquant n'est jamais arrivé donc elle a été reportée (au pire on aurait joué à l'ancienne hein ^^).
Ah oui c'est possible car armée des morts est chez les Boyz (c'est là bas qu'on avait tout cassé la dernière fois) et là ils étaient en "guests" chez les Girlz. Je croyais avoir mis à jour les 2 en même temps mais du coup j'ai le doute. J'ai fais ça et ça à l'air réglé. Et j'en ai profité pour mettre COF en 1er sur toutes les parties ^^.
Là c'était assez difficile de reproduire car, comme dit, iels étaient en mode "récré" et c'était difficile à suivre xD. Le mieux que j'aie c'est la rediff du live et encore car peu lisible .
Là j'ai un gros WE événementiel sur ma chaîne mais si j'ai le temps je testerai à nouveau l'armée des morts etc. en hors partie voir si ça plante encore et en surveillant mes actions.
J'ai implémenté les 3 premiers rangs de la Voie de Morn. Ça peut être une bonne idée de tester un peu avant la première utilisation avec les joueurs...
Bonjour,
Comment écrire une arme qui fait des dégats en plus sur un type de créature ?
Ex : Un marteau qui fait 1D6 DMG sup contre les orcs
Ex : Une hache +1 qui fait un 1D6 DMG sup contre les loup-garou (je n'ai pas trouvé les loups garou dans la liste des races).
Merci beaucoup !
- Ulti
Pour cela, tu peut utiliser l'option --if typeCible ou bien --if predicatCible
Dans le cas du marteau qui fait mal aux orques, tu peux ajouter --if typeCible orque --plus 1d6 --endif. Si tous tes orques n'ont pas "orque" dans la race, tu peux simplement leur ajouter un prédicat orque.
Pour la hache contre les loup-garous, tu peux faire pareil. Il faut bien comprendre que --if typeCible peut être utilisé avec n'importe quel prédicat que tu peux définir toi-même. Et si tu ne mets jamais loup-garou dans la race, utilise simplement --if predicatCible, qui ne va regarder que les prédicats.
- Sibylline
- et
- Kyreelle
Merci Ulti, c'est parfaitement clair. Je me garde cette petite note très très utile !
Bonjour,
D'abord bravo et merci pour ce script.
J'ai un probleme avec la resolution de la malediction
script derniere version disponible sur roll20
retour de l'api
"Le jet est trop ancien ou éte annulé"
["!cof-resultat-jet","1048","rate","--target","-NIOzzjQjwdS_VorH_tn"]
"Le jet est trop ancien ou éte annulé"
["!cof-resultat-jet","1049","rate","--target","-NIOzzjQjwdS_VorH_tn"]
La malédiction s'applique bien par contre pour valider un jet avec les boutons réussis ou ratés, j'ai toujours le même message sur le dernier jet "COFantasy:Le jet est trop ancien ou éte annulé"(1049).
Par contre si je valide le jet précèdent cela fonctionne... "jetPerso raté."(1048)
Merci par avance
- Ulti
Il y a une petite faute de frappe qui empêche le bon marqueur quand on a les marqueurs personnalisé.
saignementSang au lieu de saignementsSang
case 'saignementSang': registerMarkerEffet('cof-saigne', effet, m, ms); break;
- Ulti
Et pareil, j'ai l'impression que "Inderracinable" n'est pas codée (immunité fauchage + aux DM de projection). Mais en attendant, je peux le mettre en predicat sur mon PJ et l'utiliser en condition qui "annule" une partie des effets de l'attaque ? (Si oui comment ? ^^)
J'ai rien dis je suis nulle en orthographe ! J'ai trouvé Indéracinable avec un seul R :p
Du coup ça me fait penser au dédoublement. On pourrait avoir d'office un prédicat "Dedoublement" mis d'office sur le token de double ? Ou un attribut ? Ensuite, je mets que --ifpredicat Dedoublement --rate --pasDeDmg --endif sur les attaques en zones de mes PJ ?
Kyr
Non, ça ne marcherait pas parce que la fiche est partagée avec l'original. L'original et le double partagent donc les mêmes prédicats. En revanche, le double a un attribut local "dedoublement". Tu pourrais donc déjà faire --if etatCible dedoublement --rate --pasDeDmg --endif
Bonjour Ulti,
Je te souhaite une bonne année 2023 pour commencer !
Un joueur de ma campagne Anathazerin a pris "Rituel Assuré" deuxième rang de la voie du Guerrier-Mage (p139 du LdB)
J'ai vu qu'il était documenté je l'ai utilisé mais s'il double bien le d20 d'attaque il me semble qu'il ne relance pas les 1 sur les dés de DM.
Pour mémoire le texte d'origine :
2. Rituel assuré (L) : le personnage passe un tour complet à préparer un sort de son choix. Au tour suivant, s’il utilise ce sort, il pourra lancer deux d20 pour son test d’attaque magique et garder le meilleur des deux résultats. Il pourra aussi relancer tous les « 1 » obtenus aux dés de DM.
Merci de ton aide.